.....ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。 您所在的位置:网站首页 apple music 您没有访问所请求资源的权限 .....ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。

.....ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。

2024-07-08 00:45| 来源: 网络整理| 查看: 265

使用Microsoft.Office.Interop.Excel做一个Excel导入功能时,VS调时正常,但发布到IIS中却出现异常。

异常详细信息: System.UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。 ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。

解决办法: 经过各种搜索发现了几种被认为有效可行的方案 第一种思路(也是成功率最高的): 在IIS中的修改:应用程序池–>属性–>标识,改成LocalSystem 第二种思路: 修改要导入的文件的权限:Everyone/Network Service等用户的控制权限进行提升。

但是在下试了之后发现问题依旧存在,后发现异常中有这么一句话: 如果应用程序正在通过 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。 查看Web.config文件中system.web确实发现了identity impersonate="true"这个么配置。 再结合IIS应用程序池中的标识,最后发现: 若标识为ApplicationPoolIdentity,且上述时,再给该配置指定用户名和密码(具体需要有什么权限我倒是没试,我试的用户具有完全控制权限),程序即可正常运行。这种方案可能还需要一些措施来保护写在配置文件中的用户名和密码。 若标识改为LocalSystem,impersonate就不能为true,否则依然权限不够,可以改为false或直接不要该节点了。这样问题也可以解决。当然对应现有系统如此很可能会改掉这个问题的时候再造成其它的问题。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有